package 微服务.Docker_2.Docker的架构_2;

/**
 * Docker的架构
 */
public class index {
    /**
     * Docker架构中几个比较重要的概念：<p>
     * <p>
     * 1、镜像和容器：<p>
     * 镜像：Docker会把应用程序及其所需依赖、函数库、环境、配置等文件打包在一起，称为镜像<p>
     * 容器：镜像中的应用程序运行后形成的进程就是容器。只是Docker会给给镜像做隔离，对外不可见<p>
     * 注意：镜像都是只读的，应用运行过程中，是不能往镜像中写东西的，防止造成污染使得镜像不可用<p>
     * 而如果需要写数据，应用就要拷贝一份镜像中的数据文件到各自的容器中，再进行写操作<p></p>
     * <p>
     * 2、DockerHub：<p>
     * 有了隔离机制，我们就可以放心地将镜像交给别人使用<p>
     * 而如何将镜像共享给别人使用（如共享给同事、网络中的其他人）<p>
     * 这就要依靠DockerHub了<p>
     * DockerHub是一个Docker镜像托管平台，这样的平台称为Docker Registry（镜像服务器）<p>
     * 程序员可以通过Docker提供的命令完成镜像的构建，构建出如MySql、nginx等一系列镜像<p>
     * 然后把这些镜像上传到DockerHub服务器上。而官方也提供了各种优良镜像<p>
     * 国内也有类似DockerHub的平台：如网易云镜像服务、阿里云镜像库 等<p>
     * 如果不想将镜像公开，将来也可以搭建自己的私有云服务器<p></p>
     * <p>
     * 如何通过Docker构建镜像或从远端拉取镜像、如何运行容器？<p>
     * 这就需要了解Docker的架构了<p>
     * Docker是一个CS架构的程序，由两部分组成：<p>
     * 1、服务端：Docker守护进程，负责处理Docker命令，管理镜像、容器等（负责接收用户指令，完成镜像、容器的各种操作）<p>
     * 2、客户端：通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务器发送指令<p>
     * 命令到达Docker服务端后，会被守护进程Docker daemon接收和处理，它会通过提供的数据完成操作<p>
     * 要构建镜像，可以通过docker build命令<p>
     * 要拉取镜像，可以通过docker pull命令，这个命令到达服务端，之后，就会被守护进程接收然后到Registry里拉取指定的镜像了<p>
     * 要运行，可以通过命令docker run<p>
     *
     * @param args
     */
    public static void main(String[] args) {

    }
}
